import axios from 'axios'
import domain from './domain'
import router from '@/router'
import store from '@/store'

var instance = axios.create()

instance.defaults.headers.post['Content-Type'] =
  'application/x-www-form-urlencoded;charset=UTF-8'

instance.defaults.baseURL = domain.API_DOMAIN

instance.defaults.timeout = 0

instance.interceptors.request.use(
  config => {
    // 统一从store获取token和用户信息，添加到header中
    const tokenInfo = {
      userId: store.getters['user/userId'],
      sessionId: store.getters['user/sessionId'],
    };
    
    if (tokenInfo.sessionId && tokenInfo.userId) {
      // 统一使用F_token放在header中
      config.headers['F_token'] = tokenInfo.sessionId;
      config.headers['F_admin_id'] = tokenInfo.userId;
    }
    
    return config
  },
  error => {
    return Promise.error(error)
  }
)

instance.interceptors.response.use(
  response => {
    return Promise.resolve(response && response.data)
    // if (response.status === 200) {
    //   if (response.data.F_responseNo === 12100) {
    //     // Message.warning('登录已失效，请重新登录')
    //     Vue.prototype
    //       .$rbconfirm({
    //         notice: '登录已失效，请重新登录',
    //         showCancel: false
    //       })
    //       .then(() => {
    //         window.close()
    //       })
    //       .catch(() => {
    //         window.close()
    //       })
    //   } else if (response.data.F_responseNo === 12105) {
    //     // Message.warning('您的账号已在其他地方登录，请重新打开智能导题')
    //     Vue.prototype
    //       .$rbconfirm({
    //         notice: '您的账号已在其他地方登录，请重新打开智能导题',
    //         showCancel: false
    //       })
    //       .then(() => {
    //         window.close()
    //       })
    //       .catch(() => {
    //         window.close()
    //       })
    //   } else if (response.data.F_responseNo === 10001) {
    //     Message.warning('未知错误，请联系后台')
    //   }
    //   return Promise.resolve(response && response.data)
    // } else {
    //   return Promise.reject(response && response.data)
    // }
  },
  error => {
    console.error('error:', error);
    const { response } = error;
    
    // 处理 HTTP 401 未授权错误
    if (response?.status === 401) {
      window.$toast('您当前登录状态已失效，请重新登录');
      // 清除所有模块的状态（包括 sessionStorage）
      store.dispatch('clearAllState');
      // 直接跳转到登录页
      router.replace('/login');
      return Promise.reject(error);
    }
    
    // 处理业务层面的登录失效错误码
    switch (response?.data?.F_responseNo) {
      case 10003:
        window.$toast('您当前登录状态已失效，请重新登录');
        // 清除所有模块的状态（包括 sessionStorage）
        store.dispatch('clearAllState');
        // 直接跳转到登录页
        router.replace('/login');
        break;
      default:
        break;
    }
    return Promise.reject(error)
  }
)

export default instance
